В этом шаге рассмотрим рисование обычных линий.
Как обычно создадим MFC проект, сделаем все необходимые дополнения для OpenGL. Добавим переменную BOOL m_Strip как private элемент класса C...View. Добавим обработчик OnLButtonDown(...):
void CExampleView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(m_Strip)
m_Strip = FALSE;
else
m_Strip = TRUE;
InvalidateRect(NULL, FALSE);
CView::OnLButtonDown(nFlags, point);
}
В конструкторе класса C...View присвоим этой переменной значение FALSE.
Новая функция OnDraw(...) теперь будет выглядеть так:
void CExampleView::OnDraw(CDC* pDC)
{
CRect clientRect;
CExampleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
GetClientRect(&clientRect);
glViewport(0, 0, clientRect.right, clientRect.bottom);
glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона
glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета
glLineWidth (20); // размер точек
glColor3f (1.0, 0.0, 0.5); // текущий цвет примитивов
if(!m_Strip)
glBegin (GL_LINES);
else
glBegin (GL_LINE_STRIP);
glVertex2f(-0.5f,0.5f);
glVertex2f(0.5f,-0.5f);
glVertex2f(-0.5f,-0.5f);
glVertex2f(0.5f,0.5f);
glEnd();
}
Программа просто рисует диагонали в центре окна, а при нажатии на кнопку мыши замыкает их. Как нетрудно догадаться, рисование линий включается с помощью аргумента GL_LINES функции glBegin. А рисование линий в режиме "последняя точка предыдущей линии - это первая точка следующей" включается аргументом GL_LINE_STRIP.
Соберите проект и понажимайте левую кнопку мыши.